package sucre

class ReportesController {

    def loginService
    def beforeInterceptor = [action:this.&auth]
    def auth = {
        def result =loginService.validarAcceso(
            session["seguridad_usuario"],
            session["seguridad_funcionesHabilitadas"],
            controllerName,actionName,request.getRemoteAddr().toString())
        if(!result) {
            redirect(controller:"login",action:"auth",params:['acceso':false])
            return false
        }
    }
    def index = {}
    def create={}
    def estadisticaCoordinadores={
        params._format="XLS"
        params._name="estadisticaCoordinador"
        params._file="estadisticaCoordinador"
        //--------- lleno el mapa con los datos del reporte---------------------
        def data = new ArrayList();
        def mapaValores;
        def aldea = Aldea.list().get(0);
        def turno = Turno.list();
        def coordinador = Coordinador.findByEstado(true);
        def tieneOtroTrabajo = "no";
        if (coordinador.otroTrabajo) {
            tieneOtroTrabajo = "si";
        }
        def nivel = coordinador.nivelDeInstruccion;
        def estudiante = "";
        def tsu        = "";
        def licenciado = "";
        def postgrado  = "";
        def doctorado  = "";
        if(nivel.contains("estudiante")) {
            estudiante = "Estudiante, " + coordinador.descripcionNivelDeInstruccion;
        } else if (nivel.contains("TSU")) {
            tsu = "TSU " + coordinador.descripcionNivelDeInstruccion;
        } else if (nivel.contains("Licenciado")) {
            licenciado = "Licenciado, " + coordinador.descripcionNivelDeInstruccion;
        } else if (nivel.contains("Postgrado")) {
            postgrado = "Postgrado, " + coordinador.descripcionNivelDeInstruccion;
        } else if (nivel.contains("Doctorado")) {
            doctorado = "Doctorado, " + coordinador.descripcionNivelDeInstruccion;
        }
        def correos = "";
        if (coordinador.correo != null) {
            correos += coordinador.correo;
        }
        if (coordinador.correoAlternativo != null) {
            correos +=", ";
            correos += coordinador.correoAlternativo;
        }
        def telefonos = "";
        if (coordinador.telefonoPersonal != null) {
            telefonos += coordinador.telefonoPersonal;
        }
        if (coordinador.telefonoHabitacion != null) {
            telefonos +=", ";
            telefonos += coordinador.telefonoHabitacion;
        }
        mapaValores = [ "nombre":aldea.nombre,
                        "entidadFederal":aldea.entidadFederal,
                        "ejeEntidadFederal":aldea.ejeEntidadFederal,
                        "municipio":aldea.municipio,
                        "ejeMunicipio":aldea.ejeMunicipio,
                        "categoria":aldea.categoria,
                        "direccion":aldea.direccion,
                        "turnoDescripcion":turno.turnoDescripcion.toString(),
                        "cedula":coordinador.cedula,
                        "nombres":coordinador.nombres,
                        "apellidos":coordinador.apellidos,
                        "nacionalidad":coordinador.nacionalidad,
                        "fechaDeNacimiento":coordinador.fechaDeNacimiento,
                        "genero": coordinador.genero,
                        "estadoCivil":coordinador.estadoCivil,
                        "telefonos":telefonos,
                        "correos":correos,
                        "direccionHabitacion":coordinador.direccionHabitacion,
                        "tsu":tsu,
                        "estudiante":estudiante,
                        "licenciado":licenciado,
                        "postgrado":postgrado,
                        "doctorado":doctorado,
                        "otroTrabajo":tieneOtroTrabajo,
                        "nombreIntitucion":coordinador.nombreIntitucion,
                        "cargo":coordinador.cargo,
                        "tiempoServicio":coordinador.tiempoServicio,
                        "tipoOcupacion":coordinador.tipoOcupacion,
                        "situacionLaboral":coordinador.situacionLaboral,
                        "fechaIngresoMS":coordinador.fechaIngresoMS
        ]
        data.add(mapaValores)
        chain(controller:'jasper',action:'index',model:[data:data],params:params)
    }
    
    //--------------------------------------------------------------------------------------------------------------------------
    def estadisticaAsesores={
        params._format="XLS"
        params._name="estadisticaAsesores"
        params._file="estadisticaAsesores"
        //--------- lleno el mapa con los datos del reporte---------------------
        def data = new ArrayList();
        def mapaValores;
        def aldea = Aldea.list().get(0);
        def turno = Turno.list();
        //-----------------busco lapso academico-------------------
        def lapso = sucre.LapsoAcademico.createCriteria()
        def results = lapso.list (max: 1, offset: 0) {
            order("id", "desc")
        }
        def lapsoAcademico = ""
        if (!results.isEmpty()){
            lapsoAcademico = results.get(0).nombre;
        }
        
        def docentes = Docente.list();
        
        Iterator iter = docentes.iterator();
        while (iter.hasNext()) {
            def docente = iter.next();
            def puebloIndigena = "no";
            if (docente.puebloIndigena) {
                puebloIndigena = "si";
            }
            def correos = "";
            if (docente.correo != null) {
                correos += docente.correo;
            }
            if (docente.correoAlternativo != null) {
                correos +=", ";
                correos += docente.correoAlternativo;
            }
            def telefonos = "";
            if (docente.telefonoPersonal != null) {
                telefonos += docente.telefonoPersonal;
            }
            if (docente.telefonoHabitacion != null) {
                telefonos +=", ";
                telefonos += docente.telefonoHabitacion;
            }
            mapaValores = [ "nombre":aldea.nombre,
                        "entidadFederal":aldea.entidadFederal,
                        "ejeEntidadFederal":aldea.ejeEntidadFederal,
                        "municipio":aldea.municipio,
                        "ejeMunicipio":aldea.ejeMunicipio,
                        "categoria":aldea.categoria,
                        "direccion":aldea.direccion,
                        "turnoDescripcion":turno.turnoDescripcion.toString(),
                        "cedula":docente.cedula,
                        "nombres":docente.nombres,
                        "apellidos":docente.apellidos,
                        "nacionalidad":docente.nacionalidad,
                        "fechaDeNacimiento":docente.fechaDeNacimiento,
                        "genero": docente.genero,
                        "estadoCivil":docente.estadoCivil,
                        "telefonos":telefonos,
                        "correos":correos,
                        "direccionHabitacion":docente.direccionHabitacion,
                        "ocupacion":docente.ocupacion,
                        "profesion":docente.profesion,
                        "especializacion":docente.especializacion,
                        "puebloIndigena":puebloIndigena,
                        "discapacidad":docente.discapacidad,
                        "lapsoAcademico":lapsoAcademico
            ]
            data.add(mapaValores)
        }
        chain(controller:'jasper',action:'index',model:[data:data],params:params)
    }
    //--------------------------------------------------------------------------------------------------------------------------
    def estadisticaOperarios={
        params._format="XLS"
        params._name="estadisticaOperarios"
        params._file="estadisticaOperarios"
        //--------- lleno el mapa con los datos del reporte---------------------
        def data = new ArrayList();
        def mapaValores;
        def aldea = Aldea.list().get(0);
        def turno = Turno.list();
        //-------- Lista Operarios----------------------------------------------
        def operarios = Operario.list();
        
        Iterator iter = operarios.iterator();
        while (iter.hasNext()) {
            def operario = iter.next();
            def puebloIndigena = "no";
            if (operario.puebloIndigena) {
                puebloIndigena = "si";
            }
            def correos = "";
            if (operario.correo != null) {
                correos += operario.correo;
            }
            if (operario.correoAlternativo != null) {
                correos +=", ";
                correos += operario.correoAlternativo;
            }
            def telefonos = "";
            if (operario.telefonoPersonal != null) {
                telefonos += operario.telefonoPersonal;
            }
            if (operario.telefonoHabitacion != null) {
                telefonos +=", ";
                telefonos += operario.telefonoHabitacion;
            }
            mapaValores = [ "nombre":aldea.nombre,
                        "entidadFederal":aldea.entidadFederal,
                        "ejeEntidadFederal":aldea.ejeEntidadFederal,
                        "municipio":aldea.municipio,
                        "ejeMunicipio":aldea.ejeMunicipio,
                        "categoria":aldea.categoria,
                        "direccion":aldea.direccion,
                        "turnoDescripcion":turno.turnoDescripcion.toString(),
                        "cedula":operario.cedula,
                        "nombres":operario.nombres,
                        "apellidos":operario.apellidos,
                        "nacionalidad":operario.nacionalidad,
                        "fechaDeNacimiento":operario.fechaDeNacimiento,
                        "genero": operario.genero,
                        "estadoCivil":operario.estadoCivil,
                        "telefonos":telefonos,
                        "correos":correos,
                        "direccionHabitacion":operario.direccionHabitacion,
                        "ocupacion":operario.ocupacion,                        
                        "puebloIndigena":puebloIndigena,
                        "discapacidad":operario.discapacidad
            ]
            data.add(mapaValores)
        }
        chain(controller:'jasper',action:'index',model:[data:data],params:params)
    }
    //--------------------------------------------------------------------------------------------------------------------------
    def estadisticaTriunfadores={
        params._format="XLS"
        params._name="estadisticaTriunfadores"
        params._file="estadisticaTriunfadores"
        //--------- lleno el mapa con los datos del reporte---------------------
        def data = new ArrayList();
        def mapaValores;
        def aldea = Aldea.list().get(0);
        def turno = Turno.list();
        //-----------------busco lapso academico-------------------
        def lapso = sucre.LapsoAcademico.createCriteria()
        def results = lapso.list (max: 1, offset: 0) {
            order("id", "desc")
        }
        def lapsoAcademico = ""
        if (!results.isEmpty()){
            lapsoAcademico = results.get(0).nombre;
        }
         
        def alumnos = Alumno.list();
        
        Iterator iter = alumnos.iterator();
        while (iter.hasNext()) {
            def alumno = iter.next();
            def puebloIndigena = "no";
            if (alumno.puebloIndigena) {
                puebloIndigena = "si";
            }
            def becado = "no";
            if (alumno.becado) {
                becado = "si";
            }
            def misionRivas = "no";
            if (alumno.misionRivas) {
                misionRivas = "si";
            }
            def correos = "";
            if (alumno.correo != null) {
                correos += alumno.correo;
            }
            if (alumno.correoAlternativo != null) {
                correos +=", ";
                correos += alumno.correoAlternativo;
            }
            def telefonos = "";
            if (alumno.telefonoPersonal != null) {
                telefonos += alumno.telefonoPersonal;
            }
            if (alumno.telefonoHabitacion != null) {
                telefonos +=", ";
                telefonos += alumno.telefonoHabitacion;
            }
            mapaValores = [ "nombre":aldea.nombre,
                        "entidadFederal":aldea.entidadFederal,
                        "ejeEntidadFederal":aldea.ejeEntidadFederal,
                        "municipio":aldea.municipio,
                        "ejeMunicipio":aldea.ejeMunicipio,
                        "categoria":aldea.categoria,
                        "direccion":aldea.direccion,
                        "turnoDescripcion":turno.turnoDescripcion.toString(),
                        "cedula":alumno.cedula,
                        "nombres":alumno.nombres,
                        "apellidos":alumno.apellidos,
                        "nacionalidad":alumno.nacionalidad,
                        "fechaDeNacimiento":alumno.fechaDeNacimiento,
                        "genero": alumno.genero,
                        "estadoCivil":alumno.estadoCivil,
                        "telefonos":telefonos,
                        "correos":correos,
                        "direccionHabitacion":alumno.direccionHabitacion,
                        "ocupacion":alumno.ocupacion,
                        "especialidad":alumno?.especialidad?.nombre,
                        "puebloIndigena":puebloIndigena,
                        "discapacidad":alumno.discapacidad,
                        "becado":becado,
                        "misionRivas":misionRivas,
                        "rep":alumno.rep,
                        "lapsoAcademico":lapsoAcademico
            ]
            data.add(mapaValores)
        }
        chain(controller:'jasper',action:'index',model:[data:data],params:params)
    }
}
